package com.jimikongjian.dao;

import com.jimikongjian.models.ArticleRoom;
import com.jimikongjian.models.Upvote;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by fuxiuyang on 17-5-13.
 */
public interface IUpvote {

    /**
     * 通过id号，获取点赞信息
     * @param id
     * @return List<Upvote>
     */
    public List<Upvote> getUpvoteListById(@Param("id") int id);

    /**
     * 通过用户id号，获取用户点赞所有文章的信息
     * @param userId
     * @return List<Upvote>
     */
    public List<Upvote> getUpvoteListByUserId(@Param("userId") int userId);

    /**
     * 通过文章id号，获取点赞该文章的所有的用户的信息
     * @param articleId
     * @return List<Upvote>
     */
    public List<Upvote> getUpvoteListByArticleId(@Param("articleId") int articleId);

    /**
     * 通过用户id号和文章id号，获取用户点赞点赞该文章的信息
     * @param userId
     * @param articleId
     * @return List<Upvote>
     */
    public List<Upvote> getUpvoteListByUserIdAndArticleId(@Param("userId") int userId,
                                              @Param("articleId") int articleId);

    /**
     * 通过用户id号和文章id号，判断用户是否点赞了该文章
     * @param userId
     * @param articleId
     * @return List<Upvote>
     */
    public Boolean isUpvote(int userId, int articleId);

    /**
     * 新增一个用户点赞
     * @param upvote
     */
    public void insertUpvote(Upvote upvote);

    /**
     * 通过用户的id号，删除该用户的所有的点赞信息， 慎用
     * @param upvote
     */
    public void deleteByUserId(Upvote upvote);

    /**
     * 通过文章的id号，删除该文章所有的点赞信息，慎用
     * @param upvote
     */
    public void deleteByArticleId(Upvote upvote);

    /**
     * 通过文章的id号和用户的id号，删除该用户点赞的该篇文章的信息
     * @param upvote
     */
    public void deleteByUserIdAndArticleId(Upvote upvote);
}
